\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{cite}
%opening
\title{Project Proposal}
\author{Hannes Dorfmann, Alexander Zhdanov \\
  \texttt{hannes.dorfmann@gmail.com, azhdanov@hotmail.com}}

\begin{document}

\maketitle

\section{Problem description}
In peer-to-peer systems application multicast has become an attractive alternative to IP multicast, since multicast infrastructure is not widely available. Conventional tree-based multicasting is not the best choice for cooperative environments, because the load of forwarding multicast traffic is handled by the peers that are interior nodes in the tree. SplitStream \cite{castro1} solves this problem by redistributing the content among interior-node-disjoint
multicast trees providing a uniform loading among the peers. Authors \cite{castro1} show that it is possible
to construct an efficient SplitStream forest provided that participants of the multicast at least have equal
inbound and outbound bandwidth. Furthermore, the SplitSream is resistant to failures, provided that the content is encoded, since peers lost on average one stripe due to nodes malfunction.
In GNUnet a multicast service is still missing. Therefore the goal of our project is to implement a SplitStream based application multicast service. Castro et al. \cite{castro1} built SplitSream  on top of Pastry and Scribe. However, Scribe \cite{castro3} and Pastry \cite{Rowstron} are not available yet on GNUnet. Hence we are looking for an alternative way to implement SplitStream, without Scribe and Pastry, on GNUnet.


\section{Problem importance}
In cooperative networks users get access to a service in exchange
to provided resources. Unfortunately, usage of conventional multicast trees are not an option in cooperative networks, as majority of
peers are leaves and do not provide necessary resources for the transmission of multicast traffic. This problem is particularly
evident in distribution of audio and video resources. SlipStream allows the distribution of such content, providing a
uniform load on the network participants.
\paragraph{}
The main idea behind the SplitStream is to divide the content on k stipes and to distribute them among the trees which forms
one multicast group. Participants specifying an upper bound to resources they are willing to transmit can subscribe to
multicast in those groups that ditsribute stripes they need. However, the problem with the forest construction is that if
a node is internal in some tree it should be a leaf in all others and, at the same time, the forest shall meet the
requirements imposed on the bandwidth.
\paragraph{}
SplitStream is resilient against failures and sudden nodes departures. The system is construced so that any node is interior
in only one tree. So the node failure causes loss of one stripe on average. Appropriate methods of content encoding help to
hide information loss in the system.
\paragraph{}
The main problem in design of  SplitStream is efficient construction of distribution trees forest that satisfy bandwidth
constraints in decentralized, scalable and efficient manner.

\section{Related work}
So far we have found several articles related to the topic. Castro et al.\cite{castro1}, \cite{castro2} describe the 
SplitStream design and give a theoretical justification for the effiecient forest construction. They also implemented
the SplitStream and tested it in the Planetlab \cite{Planetlab}. Rowstron and Druschel\cite{Rowstron} describe Pastry
``a scalable, distributed object location and routing substrate for wide-area peer-to-peer applications'' \cite{Rowstron}.
Castro et al. also present Scribe in their paper \cite{castro3}. Scribe is an application level anycast for highly dynamic
groups.
We have also found a java implementation of Pastry, Scribe and 
SplitStream at FreePastry \cite{FreePastry} which could a good starting point of our C implementation.

\section{Milestones}
Our plan of the SplitSream implementaion:
\begin{enumerate}
 \item GNUnet\cite{GNUnet} build. Studying of the API. (9th May)
 \item Studying of the article \cite{castro1}. Formalization of the SplitSream algorithms. (16th May)
 \item Studying java implementation of Pastry, Scribe and SplitSream \cite{FreePastry}. (23th May)
 \item Building interior-node-disjoint trees. (30th May)
 \subitem This could be done on top of the implementation of DHT in GNUnet.
 \item Implementation of mechanism for limitation of a node's outdegree. (6th June)
 \item Implementation of parents location.(13th June)
 \item Implementation of Spare Capacity group.(20th June)
 \item Experimental evaluation and testing.(4th July)
\end{enumerate}

\bibliography{prbib.bib}{}
\bibliographystyle{plain}
\end{document}
